package com.anrongtec.zcpt.manager;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationCompat.Builder;

import com.anrongtec.zcpt.R;
import com.anrongtec.zcpt.logo.LoginActivity;


/**
 * 通知栏管理类
 * @author cxy
 *
 */
public class AppNotificationManager {
	
	private int ID_NOTIFICATION = 3323;
	
	private NotificationManager manager;
	
	private NotificationCompat.Builder builder;
	
	private Notification notification;
	
	private static AppNotificationManager instance;
	
	public AppNotificationManager() {
		super();
	}

	/**
	 * 创建通知
	 * @param c	
	 * @param ticker 收到通知时显示的文字
	 * @param title	通知标题
	 * @param text	通知内容
	 * @return
	 */
	public static synchronized AppNotificationManager create(Context c, String ticker, String title, String text){
		if (instance == null) {
			instance = new AppNotificationManager();
		}
		
		instance.manager = (NotificationManager) c.getSystemService(Context.NOTIFICATION_SERVICE);
		instance.builder = new Builder(c);
		
		instance.builder.setContentTitle(title)//设置通知栏标题  
		.setContentText(text) //<span style="font-family: Arial;">/设置通知栏显示内容</span>  
		.setContentIntent(getDefalutIntent(c, PendingIntent.FLAG_UPDATE_CURRENT)) //设置通知栏点击意图  
		//  .setNumber(number) //设置通知集合的数量  
		.setTicker(ticker) //通知首次出现在通知栏，带上升动画效果的  
		.setWhen(System.currentTimeMillis())//通知产生的时间，会在通知信息里显示，一般是系统获取到的时间  
		.setPriority(Notification.PRIORITY_DEFAULT) //设置该通知优先级  
		//  .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消    
		.setOngoing(false)//ture，设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)  
		.setDefaults(Notification.DEFAULT_VIBRATE)//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置，使用defaults属性，可以组合  
		//Notification.DEFAULT_ALL  Notification.DEFAULT_SOUND 添加声音 // requires VIBRATE permission
		.setSmallIcon(R.drawable.ic_launcher);//设置通知小ICON
		
		return instance;
	}
	
	
	/**
	 * 显示通知
	 */
	public void showNotification(){
		
		notification = builder.build();
		notification.flags = NotificationCompat.FLAG_AUTO_CANCEL;
		/*
	      Notification.FLAG_SHOW_LIGHTS              //三色灯提醒，在使用三色灯提醒时候必须加该标志符
	      Notification.FLAG_ONGOING_EVENT          //发起正在运行事件（活动中）
	      Notification.FLAG_INSISTENT   //让声音、振动无限循环，直到用户响应 （取消或者打开）
	      Notification.FLAG_ONLY_ALERT_ONCE  //发起Notification后，铃声和震动均只执行一次
	      Notification.FLAG_AUTO_CANCEL      //用户单击通知后自动消失
	      Notification.FLAG_NO_CLEAR          //只有全部清除时，Notification才会清除 ，不清楚该通知(QQ的通知无法清除，就是用的这个)
	      Notification.FLAG_FOREGROUND_SERVICE    //表示正在运行的服务
	      */
		manager.notify(ID_NOTIFICATION, notification);
	}
	
	
	public static PendingIntent getDefalutIntent(Context c, int flags){
		
		PendingIntent pendingIntent= PendingIntent.getActivity(c, 1, new Intent(c, LoginActivity.class), flags);
		return pendingIntent;
	}
}
